.\"  Chinese Version Copyright mhss, www.linuxforum.net, 2000
.TH ZIC 8
.SH NAME
zic - 时区编辑器
.SH 总览
.B zic
[
.B \-v
] [
.B \-d
.I directory
] [
.B \-l
.I localtime
] [
.B \-p
.I posixrules
] [
.B \-L
.I leapsecondfilename
] [
.B \-s
] [
.B \-y
.I command
] [
.I filename 
\&... ]
.SH 描述
.if t .ds lq ``
.if t .ds rq ''
.if n .ds lq \&"\"
.if n .ds rq \&"\"
.de q
\\$3\*(lq\\$1\*(rq\\$2
..
.I Zic
从文件中读取文本输入，文件的名字是用命令行指定的；
然后生成时间转换信息文件，此文件由输入指定。
如果
.I 文件名
是
.BR \-
，从
标准输入中读取。 
.PP
可得到以下选项:
.TP
.BI "\-d " 目录
在指定的目录中生成时间转换信息文件，而不是下面的标准
的目录名。 
.TP
.BI "-l " 时区
用给定的时区作为本地时间。
.I Zic
对此选项的对待如同在输入中有下面格式的连接行
.sp
.ti +.5i
连接 (从) \fI时区\fP (到)本地时间
.TP
.BI "-p " 时区
当处理 POSIX 格式的时区环境变量时，使用给定的时区规则。
.I Zic
对此选项的对待如同在输入中有下面格式的连接行
.sp
.ti +.5i
连接 (从) \fI时区\fP  (到)POSIX规则
.TP
.BI "-L " 闰秒文件名
从指定名字的文件中读闰秒信息。
如果不使用本选项,则在输出文件中不出现闰秒信息。
.TP 10
译注: 早期的日期时间度量采用天文方法，GMT (Greenwich Mean
Time，格林威治平均时) 中的 Greenwich 所指称的是英国的一个
天文台。1948年发明了原子钟，当前使用铯133原子钟的国际原子
时间(TAI)与地球的公转和自转无关。由于地球自转的速度逐渐变
慢，为保持与太阳运动的同相, 当 TAI 与太阳时之间的差距达
到 800ms 时，在太阳时中加入闰秒调快太阳时的时间系统。矫正
后的时间称为 UTC 时间(Universal Coordinated Time，世界时)。
PC 机以本机器内的晶振计时, 没有与 UTC 时间同步的机制。UTC
是法语的缩写。
引自：现代操作系统/Andrew S. Tanebaum 著。-北京: 机械工业
出版社，1999.11。第 11 章，第 11.1.2 节；第 5 章，
第 5.4.1 节。
.TP
.B \-v 
当出现在数据文件中的年超出了
.IR time (2)
可表示的值的年的范围时提出申诉。
(让用户知道他干不了超出自身能力的事)
.TP
.B \-s
限定在输出文件中存储的时间值无论被作为有符号或无符号
均是同一个值。你能用此选项生成 SVVS 兼容文件。
.TP 8
译注: 传统 UNIX 使用三十二位有符号整数计数器以秒为单位计
时，以1970年1月1日为零起点，在2038年将溢出，负数可表示到
1901年。Linux 使用三十二位无符号整数计数器以秒为单位计时，
以1970年1月1日为零起点，在2106年将溢出。由此决定了时间值
的范围(至少是在 ANSI C 中)。
引自：现代操作系统/Andrew S. Tanebaum 著。-北京: 机械工业
出版社，1999.11。第 5 章，第 5.4.2 节。
.TP
.BI "-y "命令
当检测年的类型时，使用给定的
.I 命令
，而不是
.B yearistype
(见后)
.PP
输入行由字段组成。字段之间以白空格字符(空格或 TAB)分隔。
前导和后挂的白空格将被忽略。在输入中的未加引号的 # 号
表示直到其所在行结束的部分是注释。如果要在字段中使用空白和 # 号，
你要把它们用双引号括起来。任何(去除了注释后的)空行将被
忽略。非空行应是以下三种类型之一: 规则行，时区行，连接行。
.PP
规则行的格式
.nf
.ti +.5i
.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
.sp
Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
.sp
例如:
.ti +.5i
.sp
Rule	US	1967	1973	\-	Apr	lastSun	2:00	1:00	D
.sp
.fi
组成规则行的字段是:
.TP "\w'LETTER/S'u"
.B "NAME " 名字
给出此条规则所属的规则集的名字，名字可任意起。
.B "FROM " 从...(年)
给出本规则应用的启始年份。提供的年份可以是任何整数；
.B "minimum " 最小
(或其略写)一词的意思是可表示成整数的最小年份。
.B "maximum " 最大
(或其略写)一词的意思是可表示成整数的最大年份。
规则可以描述不能以时间值表示的时间，
但忽略不能以时间值表示的时间，
这允许规则在不同时间值类型的主机之间有可移植性。
.TP
.B "TO "到...(年)
给出本规则应用的终止年份。除了上面的
.B 最大
和
.B 最小 
，
.B "only " 唯一
(或其略写)一词的意思是与
.B FROM
字段有相同的值。 
.TP
.B "TYPE "类型 
给出本规则应用的年份类型。如果
.B TYPE
是
.B \-
，则本规则应用于包含在
.B FROM
和
.B TO
之间的所有年份。如果是其他类型，则
.B Zic
执行下面的命令
.ti +.5i
\fByearistype\fP \fIyear\fP \fItype\fP
.br
来检测某一年的类型: 退出状态 0 表示此年是给定的类型；
退出状态非 0 表示此年不是给定的类型。 
.TP
.B "IN "在...(月)
给出本规则有效的月份的名字。月份的名字可用缩写。
.TP
.B "ON "在...(日) 
给出本规则有效的日期。可识别的日期的格式包括：
.in +.5i
.sp
.ta \w'Sun<=25\0\0'u
5	一个月的第 5 天
lastSun	一个月的最后的星期天
lastMon	一个月的最后的星期一
Sun>=8	一个月的第 8 天以后(含第 8 天)的第一个星期天
Sun<=25	一个月的第 25 天以前(含第 25 天)的最后一个星期天
.fi
.in -.5i
.sp
星期的名字是可以缩写或全拼。注意在
.B ON
字段中不能有空格。
.TP
.B "AT "在...(时间)
给出本规则有效的时间。可识别的时间的格式包括：
.nf
.in +.5i
.sp
.ta \w'1:28:13\0\0'u
2	用小时表示的时间
2:00	用小时:分钟表示的时间
15:00	用 24 制小时表示的时间 (表示下午的时间)
1:28:14	用小时:分钟:秒钟表示的时间
.fi
.in -.5i
.sp
这里午夜 0 点是一天开始， 午夜 24 点是一天结束。
对于任何以上格式，如果给定的时间是本地的
.q "墙钟"
时间，可以后跟字母
.B w ；
如果给定的时间是本地的
.q "标准"
时间，可以后跟字母
.B s ；
果给定的时间世界时间，可以后跟字母
.B u
（或
.B g
或
.B z ）
如果没写此种指示符，假定是"墙钟"时间。
.TP 8
译注：例如我的"墙钟"时间是北京时间(GMT+8),我的本地标准时间
是 GMT+9(哈尔滨所在的时区的时间)。
.TP
.B "SAVE "补偿
给出当本规则有效时增加到本地标准时间上的时间量。
本字段与
.I AT
字段格式相同(当然，未使用
.B w 和
.B s 后缀)。
.TP
.B "LETTER/S "字母
给出当本规则有效时时区缩写的
.q "可变部分"
(例如，
.q "EST" 中
的
.q "S" 或
.q "EDT" 中的
.q "D" )。如果本字段是
.BR \- ，可变部分是空。 
.PP
时区行格式
.sp
.nf
.ti +.5i
.ta \w'Zone\0\0'u +\w'Australia/Adelaide\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u
Zone	NAME	GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
.sp
例如：
.sp
.ti +.5i
Zone	Australia/Adelaide	9:30	Aus	CST	1971 Oct 31 2:00
.sp
.fi
组成规则行的字段是:
.TP "\w'GMTOFF'u"
.B "NAME "名字
时区的名称，被作为为时区而生成的时间转换文件的名字。
.TP
.B "GMTOFF "GMT-偏移量
为得到本时区的标准时间而应加到 UTC 时间上的时间量。
本字段与规则行的
.B AT
和
.B SAVE
有相同的格式；字段值是负值
(即以负号开始)表示要从 UTC 时间上减去的时间量。
.TP
.B "RULES/SAVE "规则/补偿 
本时区应用的规则的名字，或者是应加到本地标准时间上的
时间量 。如果本字段是
.B \- ，则本时区总是用标准时间。
.TP
.B "FORMAT "格式
本时区的时区缩写的格式。字符对
.B %s
表示时区缩写的
.q "可变部分"
。另外，/ 符号(斜扛) 分隔标准时和夏令时的缩写。
.TP
.B "UNTIL "直到
是某个位置的 UTC 偏移量或规则改变的时间。它被指定为 
某年某月某日某时。如果指定了本字段，直到指定的时间之
后，才会产生从改变了的 UTC 偏移量和规则生成的时区信息。
某年某月某日某时的格式同于规则中的 IN、ON 和 AT 列；
随后的列可以省略，给未写出的列的缺省值是可能的最早的值。
.IP
下一行必须是一个
.q 接续
的行，就是说，除了字符串
.q Zone
和名字省略了之外，与时区行有一样的格式；接续行在上一行
的
.B UNTIL
字段所指定的时间开始后，按本行的 UTC 偏移量或规
则在上一行名字字段指定的文件中生成时区信息。接续行可以
有象时区行一样的
.B UNTIL 字段，用于指示下一行是自己的接续。
.TP 8
译注：上面的这段绕口令的意思是
zome 输出的时区文件名 规则1 规则2生效时间
规则2 规则3生效时间 
规则n
.PP
连接行格式
.sp
.nf
.ti +.5i
.ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u
Link	LINK-FROM	LINK-TO
.sp
例如：
.sp
.ti +.5i
Link	Europe/Istanbul	Asia/Istanbul
.sp
.fi
.B LINK-FROM
字段的值应是在某个时区行的
.B NAME 名字
字段上出现过；
.B LINK-TO
字段是那个时区的可替代的名字。
.PP
除了接续行之外，行可在文件中以任意顺序出现。
.PP
描述闰秒的文件中的行有以下格式: 
.nf
.ti +.5i
.ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u
.sp
Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
.sp
例如：
.ti +.5i
.sp
Leap	1974	Dec	31	23:59:60	+	S
.sp
.fi
字段
.B YEAR、
.B MONTH、
.B DAY 
和
.B HH:MM:SS
说明什么时侯闰秒出现。 
.B CORR
字段在应增加一秒时是
.q + ，在应减少一秒时是
.q - 。
在其他字段给出的闰秒时间应被解释为 UTC 时间的情况下，
.B R/S
字段应是
S
(
.q Stationary
静止一词的缩写)；在其他字段给出的闰秒时间应被解释
为本地墙钟时间的情况下，
.B R/S
字段应是 R(
.q Rolling 滚动一词的缩写)。 
.SH 注意
对于有多于两种类型的本地时间的地区，你可能需要用最早变更时
间的规则的
.B AT
字段中的本地标准时间，来确保记录在编译的文件
中的最早变更时间是正确的。 
.SH 相关文件
/usr/local/etc/zoneinfo 生成的文件所在的标准目录。
.SH 又见
newctime(3), tzfile(5), zdump(8)

.SH [中文版维护人]
.B mhss <jijingzhisheng@up369.com>
.SH [中文版最新更新]
2000/12/05
.SH "[中国 Linux 论坛 man 手册页翻译计划]"
.BI http://cmpp.linuxforum.net
